package com.flyqiu.common.spring;

import com.flyqiu.common.mybaits.plus.FlyQiuQueryWrapper;
import com.flyqiu.common.mybaits.plus.SimpleQueryConstructor;
import com.flyqiu.common.tools.FlyQiuCollectionTools;

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.function.BiConsumer;

/**
 * Spring 查询条件构造器。
 * 提供了创建动态查询条件的方法。
 */
public class FlyQiuSpringQueryConstructor extends SimpleQueryConstructor {

    /**
     * 创建动态查询条件。
     *
     * @param autoHandlerQueryCondition 是否自动处理查询条件
     * @return 查询条件构造器
     */
    public static FlyQiuQueryWrapper createStartQueryWrapper(boolean autoHandlerQueryCondition) {
        Map<String, String[]> parameterMap = FlyQiuSpringContextTools.getHttpServletRequest().getParameterMap();
        LinkedHashMap<String, String> data = new LinkedHashMap<>();
        FlyQiuCollectionTools.iterator(parameterMap, (key, strings) -> {
            String join = String.join(",", strings);
            data.put(key, join);
        });
        return createQueryWrapper(data, autoHandlerQueryCondition);
    }

    /**
     * 创建默认的动态查询条件。
     *
     * @return 查询条件构造器
     */
    public static FlyQiuQueryWrapper createStartQueryWrapper() {
        return createStartQueryWrapper(true);
    }
}
